自鯖建立 5:データベースをR2に自動バックアップさせる - Misskey
前:
## まず
バックアップは大切なのだが
バックアップあるからといってサーバーぶっ飛ばした時に自分が使えるかといったら…という感じである
が、やり方を知る&なんか役に立つかもしれないという安心を得るためにやってみる
試したやり方
①R2のAWS S3互換APIを使ってR2に保存するやり方 どうなった
先になぜか②Wranglerのやり方をやってみたけどやっぱできないっぽい(どうしてもGUIが必要?っぽい)ため①でやった
あっさりできた
①のやり方👇
## R2のAWS S3互換APIを使ってMisskeyデータベースをR2に自動バックアップする
✅参考
だいたいこちらの通りです 見よう!
R2バケットを設定
バケットを作成
バケット名:適当
長すぎないほうが楽…
misskey-buckupにしたとする
バケットの設定
ライフサイクルルールを設定
わかる名前にして、適当な日数で古いバックアップを消すようにする
https://gyazo.com/4c93f5490da0a2f9a587bba0ff2cd7a9
他はデフォルトのままでいいはず
オブジェクトストレージではr2.dev サブドメインを許可したけどこれはしない。自分がアクセスできればいいので
APIトークンを取得する
APIトークンの管理→APIトークンを作成する
https://gyazo.com/50d6207d7cc1716446ef88bc3002ef94
トークン名:わかればいいので バケット名とかbackupとかにしたらいい気がする
権限:オブジェクト読み取りと書き込みにする
バケットの指定:特定のバケットでさっき作ったバケット指定
TTL:無期限(トークンの有効期限)
クライアント IP アドレスフィルタリング:空欄
APIトークンを作成
出てきたやつをメモる
アクセスキー、シークレットアクセスキー、エンドポイント (URL)
AWS CLIの設定
さっきのR2のAPIはAmazonのS3というクラウドストレージのAPIと互換性があるので、サーバにてS3を使うのと同じやり方でR2が使えるということらしい AWS CLIというツールを介することで、バケットにサーバーからファイルをアップロードしたりの操作ができるらしい
この手順ではpostgresというユーザーにログインします。PostgreSQLというデータベース管理システムで最初に作られるユーザー。Misskeyのデータベース管理に使われている いつものユーザーでログイン
$ aws --version
でバージョン情報が表示されたらインストール済
アプリイメージを使ったインストールで、Misskeyに必要なのでPostgreSQLが諸々と一緒にインストールされている(多分)
ない場合インストールする:
code:bash
sudo apt update
sudo apt install awscli
postgresユーザーにログイン
$ sudo su - postgres
AWS CLI プロファイルをつくる
プロファイルに、さっきのキーを登録する
プロファイル名:適当(backupにしてみた)
code:bash
$ aws configure --profile backup
# するといろいろ聞かれるので、さっきのやつを入力
AWS Access Key ID None:アクセスキー AWS Secret Access Key None:シークレットアクセスキー Default region name None: # ↑ autoか空欄でいいっぽい R2には関係ない?
Default output format None: json ちなみに
今の設定は以下のファイルで見られるよう
postgresユーザーの
~/.aws/credentialsと~/.aws/config
シェルスクリプトを作る
参考サイトを見よう!
postgresで継続
シェルスクリプト(bashスクリプト)のファイルをホームディレクトリに作る
$ nano backup.sh
バケット名、プロファイル名、エンドポイントは自分のものに変えておく
あらかじめ自分のPCの見やすいテキストエディタとかで書き換えておき、しっかり見比べて確認します
スクリプトの実行権限変更
$ chmod 744 backup.sh
スクリプトを手動で実行して、動くか確認
$ bash ./backup.sh
でスクリプトを実行
bashはスクリプトを実行するコマンド
適切な権限がないと実行できない
R2バケットを見に行って、アップロードされていればOK
crontabの設定
定期的に実行するコマンドやスクリプトの設定をするツールらしい
postgresで継続
$ crontab -e→1でnanoが開く
一番下にcron式を追記
このあとすぐくらいの時刻で一旦試してみる
例)12 20 * * * ./bash.sh:毎日20:12に実行
時刻、曜日、範囲、間隔の指定もできるらしい
バックアップできていたら、好きな時刻に変えておく
例)0 4 * * * ./backup.sh:毎日朝4時に実行 など
時刻?
一番Misskey使わないであろう時刻
他の設定と被らない時刻
あと、↑ではタイムゾーンがJSTであることも確認しました($ date)
できれば毎日以上にしたほうがいいらしい
また明日確認して良ければ終わり。
バックアップできましたか?ひとまず手順はここまで